Estoy aprendiendo Firebase y estoy usando la última versión 9.4.1 para Web con Javascript y Jquery. Tengo el siguiente código donde verifico si el usuario está conectado actualmente y, en caso afirmativo, no tiene permiso para acceder a la página de inicio de sesión. Del mismo modo, si el usuario ha iniciado sesión, también escondo los botones "Registrarse" e "Iniciar sesión" y muestro el botón "Cerrar sesión". Sin embargo, durante mi experimento descubrí que estas acciones se realizan con bastante lentitud. Esto significa que si trato de acceder a la página de inicio de sesión, la página se carga durante casi medio segundo, muestra todo el contenido de la página (formulario de inicio de sesión y demás) en un instante durante medio segundo y luego decide redirigir de nuevo al índice. página. Incluso los botones "Registrarse" e "Iniciar sesión" se muestran durante la misma cantidad de tiempo antes de ocultarse y el botón "Cerrar sesión" también tarda en mostrarse. ¿Por qué hay estos retrasos? ¿Hay alguna forma de eliminar estos retrasos y hacer que las acciones se realicen al instante?
Código de verificación de autenticación
onAuthStateChanged(auth, (user) => { if(user){ const uid = user.uid; (window.location.pathname.split("/").pop() == 'login.php')?location.replace("index.php"):null; $(".logout").show(); $(".login").hide(); $(".register").hide(); } });Cuando se carga la página, Firebase intenta restaurar el estado de autenticación del usuario a partir de la información que tiene en el almacenamiento local. Esto requiere que haga una llamada al servidor para verificar las credenciales y cosas como si la cuenta está deshabilitada. Esta llamada lleva algún tiempo, y solo una vez que se complete la llamada se llamará a onAuthStateChanged con el resultado.
Esto significa que el parpadeo breve que ve es bastante normal y no se puede evitar solo con la API de Firebase. Un truco que puede hacer es almacenar usted mismo un pequeño valor de token en el almacenamiento local y luego leerlo justo cuando se carga la página para determinar si es probable que el usuario sea autenticado. Michael Bleigh explicó esta técnica en su charla Google I/O Architecting Mobile Web Apps
Si bien no puede evitar el flash en todos los casos con esto, puede usarlo para evitar el flash para la mayoría de los usuarios de manera efectiva.